The delivery of end-to-end services in a communications network often requires the performance of a variety of service functions. Such service functions may include, but are not limited to, firewalls and traditional IP Network Address Translators (“NATs”), as well as application-specific functions. The definition and instantiation of an ordered set of service functions and the subsequent steering of traffic through those functions is referred to as service function chaining (“SFC”), or simply service chaining. In the process, the traffic is serviced as per policy in the service functions and the service chaining infrastructure. Existing methods of forwarding traffic through service functions suffer from various deficiencies, including but not limited to, complexity of deployment and operation due to a large number of forwarding touch points; scale challenges due to the involvement of service functions in making forwarding decisions, and violation of operational environment policies due to errors or unintentional modification of forwarding state by service functions.